#ifndef PARAFLUIDSIMULATIONSETTINGSWIDGET_H
#define PARAFLUIDSIMULATIONSETTINGSWIDGET_H

#include "ui_parafluidsimulationsettingswidget.h"
#include "parafluidsubstance.h"

#include <QWidget>

namespace ParaFluid
{
	
	/**
	* Simulation Settings Widget
	*/
	class SimulationSettingsWidget
		: public QWidget
		, private Ui::ParaFluidSimulationSettingsWidget
	{
		
		Q_OBJECT
		
	public:
		
		/**
		* Destructor
		*/
		~SimulationSettingsWidget();
		
		/**
		* Default Constructor
		*/
		SimulationSettingsWidget(QWidget * parent = 0);
		
		/**
		* Getter for Buckets
		*/
		int buckets() const;
		
		/**
		* Getter for Atoms
		*/
		int atoms() const;
		
		/**
		* Getter for Substance
		*/
		Substance substance() const;
		
	private slots:
		
		/**
		* Reset
		*/
		void reset();
		
		/**
		* Set Time Step
		*/
		void setTimeStep();
		
		/**
		* Set Smoothing Distance
		*/
		void setSmoothingDistance();
		
		/**
		* Set Gravity
		*/
		void setGravity();
		
	private:
		
		/**
		* Copy Constructor
		*/
		SimulationSettingsWidget(const SimulationSettingsWidget & other);
		
		/**
		* Assingment Operator
		*/
		SimulationSettingsWidget & operator= (const SimulationSettingsWidget & rhs);
		
	};
	
}

#endif
